package com.lanou3g.code0427.model;

import com.lanou3g.code0427.pojo.User;
import com.lanou3g.code0427.util.JDBCUtil;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * Created by dllo on 18/4/27.
 */
/*
专门与数据库进行连接

 */
public class Model {
    /**
     * 注册
     * 把用户信息插入到数据库中
     *
     * @param username 用户名
     * @param pwd      密码
     * @param word     喜欢的一句话
     * @return true:注册成功 false:失败
     */
    public boolean register(String username, String pwd, String word) {
        String sql = "INSERT INTO users (username, pwd, word)" +
                " VALUES (" +
                "'" + username + "'," +
                "'" + pwd + "'," +
                "'" + word + "')";
        Statement statement = JDBCUtil.getStatement();
        try {
            int rows = statement.executeUpdate(sql);
            if (rows > 0) {
                return true;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return false;
    }

    /**
     * 判断用户名存在
     * 判断数据库中是否有某一个用户名
     *
     * @param username 要判断的用户名
     * @return true:数据库有该用户名 false:没有
     */
    public boolean hasUsername(String username) {
        Statement statement = JDBCUtil.getStatement();
        // 判断有没有这个用户,其实就是查找
        // 数据块中 该用户名的 数据条数
        // 条数为0 没有, >0有
        // 拼接sql语句的时候不要忘记单引号
        String sql = "SELECT COUNT(*) FROM users WHERE username = '" + username + "'";
        try {
            ResultSet rs = statement.executeQuery(sql);
            rs.next(); // 移动到第一条数据
            // 数量信息肯定是第一列,所以直接写1
            int count = rs.getInt(1);
            if (count > 0) {
                return true; // 数据库中有该用户
            }
            rs.close(); // 关闭资源
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return false;
    }

//    public static void main(String[] args) {
//        Model model = new Model();
//        boolean hasUsername = model.hasUsername("Aa");
//        System.out.println(hasUsername);
//    }

    /**
     * 登入
     *
     * @param username 用户名
     * @param pwd      密码
     * @return 登入成功:返回装着用户信息的User对象
     * 登入失败:return null
     */
    public User login(String username, String pwd) {
        // 1.查一下是否有这个用户
        // 条件是 用户名,和密码 都匹配上
        String checkLogin = "SELECT * FROM users WHERE username = ? AND pwd = ?";
        PreparedStatement statement = JDBCUtil.getPreStatement(checkLogin);
        // 设置值
        try {
            statement.setString(1, username);
            statement.setString(2, pwd);

            ResultSet rs = statement.executeQuery();
            User user = null;
            if (rs.next()) {
                user = new User();
                String dbUsername = rs.getString("username");
                String dbpwd = rs.getString("pwd");
                String dbword = rs.getString("word");

                user.setUsername(dbUsername);
                user.setPwd(dbpwd);
                user.setWord(dbword);
            }
            rs.close();
            JDBCUtil.closeResource(statement);
            return user;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
}